Skip to content

feat(sdk-core): implement EdDSA MPCv2 external signer orchestrator#8744

Open
bitgo-ai-agent-dev[bot] wants to merge 1 commit into
masterfrom
WCI-374/eddsa-mpcv2-external-signer-orchestrator
Open

feat(sdk-core): implement EdDSA MPCv2 external signer orchestrator#8744
bitgo-ai-agent-dev[bot] wants to merge 1 commit into
masterfrom
WCI-374/eddsa-mpcv2-external-signer-orchestrator

Conversation

@bitgo-ai-agent-dev
Copy link
Copy Markdown

Summary

  • Implements signEddsaMPCv2TssUsingExternalSigner in EddsaMPCv2Utils, replacing the stub in baseTSSUtils. Full 3-round orchestration using caller-supplied generator functions, with pickBitgoPubGpgKeyForSigning(isEddsaMpcv2=true) and armored BitGo GPG key passed to round 2/3 generators.
  • Adds dispatch block in wallet.ts signTransaction for customEddsaMPCv2Signing* params (placed before existing ECDSA MPCv2 block), plus private signTransactionTssExternalSignerEdDSAMPCv2 method.
  • Adds unit tests: happy path, string txRequestId resolution, missing round-2 signatureShares assert, message-signing rejection, and armored key delivery to generators.

Depends on: WCI-373 (types + stub — already merged)
Scope: WCI-165

Test plan

  • Unit tests in modules/sdk-core/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2Utils.ts cover the 5 cases listed above
  • yarn unit-test --scope @bitgo/sdk-core passes in CI
  • Wallet dispatch block verified: customEddsaMPCv2Signing* functions route to signTransactionTssExternalSignerEdDSAMPCv2, not the ECDSA path

Ticket: WCI-374

🤖 Generated with Ralph

@linear-code
Copy link
Copy Markdown

linear-code Bot commented May 12, 2026

WCI-374

@bitgo-ai-agent-dev bitgo-ai-agent-dev Bot force-pushed the WCI-374/eddsa-mpcv2-external-signer-orchestrator branch 2 times, most recently from b7ed415 to 2910b20 Compare May 12, 2026 11:20
@Marzooqa Marzooqa force-pushed the WCI-374/eddsa-mpcv2-external-signer-orchestrator branch 2 times, most recently from 3c3a1cc to f14db2d Compare May 14, 2026 10:21
Implement signEddsaMPCv2TssUsingExternalSigner in EddsaMPCv2Utils,
replacing the stub in baseTSSUtils. Also wire up the wallet.ts
dispatch block and private signTransactionTssExternalSignerEdDSAMPCv2
method so the calling code and implementation land together.

- EddsaMPCv2Utils.signEddsaMPCv2TssUsingExternalSigner: full 3-round
  orchestration using caller-supplied generator functions, pickBitgo-
  PubGpgKeyForSigning with isEddsaMpcv2=true, and armored BitGo GPG
  key passed to round 2/3 generators. Asserts signatureShares after
  round 2, mirrors ECDSA counterpart.
- wallet.ts: adds dispatch block for customEddsaMPCv2Signing* params
  before existing ECDSA MPCv2 block; adds private
  signTransactionTssExternalSignerEdDSAMPCv2 method.
- Unit tests: 5 cases covering happy path, string txRequestId
  resolution, missing round-2 signatureShares assert, message-signing
  rejection, and armored key delivery to generators.

Ticket: WCI-374

Co-Authored-By: Claude Opus 4.7 <[email protected]>
Session-Id: 68742945-d54f-4fb6-a866-47a802ad253e
Task-Id: bb6a6972-cbe9-43f2-a9c3-74eefc045a44
@Marzooqa Marzooqa force-pushed the WCI-374/eddsa-mpcv2-external-signer-orchestrator branch from f14db2d to 3266e35 Compare May 14, 2026 10:25
@Marzooqa Marzooqa marked this pull request as ready for review May 14, 2026 13:27
@Marzooqa Marzooqa requested review from a team as code owners May 14, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant